/*
  登录模块
*/
import { getUser, delUser, setUser } from '@/utils/auth.js'
import { login } from '@/api/login.js'

export default {
  namespaced: true,
  state: () => ({
    // 登录成功后的用户信息（主要是token）
    userInfo: getUser() || null
  }),
  mutations: {
    // 更新用户信息
    updateUserInfo (state, payload) {
      // 更新Store中状态
      state.userInfo = payload
      // 更新缓存
      setUser(payload)
    },
    // 删除用户信息
    deleteUserInfo (state) {
      // 删除Store中状态
      state.userInfo = null
      // 删除缓存
      delUser()
    }
  },
  actions: {
    // 实现登录的action
    async toLogin (context, payload) {
      try {
        // 调用登录接口
        const ret = await login(payload)
        // 调用mutation，更新用户信息
        context.commit('updateUserInfo', ret.data)
        if (ret && ret.data && ret.data.token) {
          // 登录成功
          return true
        }
      } catch (e) {
        console.log(e)
        // 告诉页面组件登录失败了
        return false
      }
    }
  },
  modules: {
  }
}
